package com.aabte.springcloudlearn.feigncustomerdemo.service;

import com.aabte.springcloudlearn.common.beans.User;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 服务提供者的Feign
 * 这个接口相当于把原来的服务提供者项目当成一个Service类，
 * 我们只需在声明它的Feign-client的名字，会自动去调用注册中心的这个名字的服务
 * 更简单的理解是value相当于MVC中的Controller类的父路径，通过"父路径+子路径和参数来调用服务"
 * <p>
 * {@link FeignClient}注解的value属性对应服务提供者的实例名称
 *
 * @author Daniel
 */
@FeignClient(value = "hello-service")
public interface HelloCustomerServiceFeign {

    /**
     * Feign中没有原生的{@link GetMapping}/{@link PostMapping}/{@link DeleteMapping}/{@link PutMapping}，
     * 要指定需要用method进行
     */
    @RequestMapping(value = "/hello")
    String helloFeign();

    @RequestMapping(value = "/user")
    List<User> queryUser();

    @RequestMapping(value = "/user/{id}")
    User queryUserById(@PathVariable(value = "id") Long userId);

}
